<?php
/**
 * Модуль обработки редактора WYSIWYG
 * 
 * Класс предназначен для обработки кода, возвращаемого модулем WYSIWYG
 * 
 * @author Дмитрий Кузьма <kouzma.d@gmail.com>
 * @version 1.0
 */
class Service_Editor {
  
  function __construct() {

  }
  
  /**
   * Оставляет только допустимые теги в коде WYSIWYG
   *
   * @param string $strHTML - исходный код WYSIWYG
   * @return string - преобразованная строка
   */
  public static function parseHTML($strHTML, $type= "admin"){
		if ($type == "admin") $tags = "<b><p><a><span><font><strong><img><p><em><strike><u><sub><sup><ol><ul><li><img><h1><h2><h3><h4><big><small><br /><br><div></div><style></style><pre></pre><font></font><table></table><tbody></tbody><tr></tr><td></td><blockquote></blockquote>";
		elseif ($type == "comment") $tags = "<b><p><a><span><font><strong><img><p><em><strike><u><sub><sup><ol><ul><li><img><h1><h2><h3><h4><big><small><br /><br>";
		else $tags = "<b><p><a><span><font><strong><img><p><em><strike><u><sub><sup><ol><ul><li><img><h1><h2><h3><h4><big><small><br /><br><div></div><style></style><pre></pre><font></font><table></table><tbody></tbody><tr></tr><td></td><blockquote></blockquote>";
    $retText = strip_tags($strHTML, $tags);
    $retText = stripslashes(str_replace(array('"', "'"), array('&quot;', "&#039;"), $retText));
    $retText = Service_Editor::returnQuot($retText, 'style');
    $retText = Service_Editor::returnQuot($retText, 'href');
    $retText = Service_Editor::returnQuot($retText, 'alt');
    $retText = Service_Editor::returnQuot($retText, 'src');
    $retText = Service_Editor::returnQuot($retText, 'class');
    $retText = Service_Editor::returnQuot($retText, 'type');
    $retText = Service_Editor::returnQuot($retText, 'id');
    $retText = Service_Editor::returnQuot($retText, 'align');
    $retText = Service_Editor::returnQuot($retText, 'size');
    $retText = Service_Editor::returnQuot($retText, 'face');
    $retText = Service_Editor::returnQuot($retText, 'width');
    $retText = Service_Editor::returnQuot($retText, 'height');
    $retText = Service_Editor::returnQuot($retText, 'cellspacing');
    $retText = Service_Editor::returnQuot($retText, 'cellpadding');
    $retText = Service_Editor::returnQuot($retText, 'border');
    $retText = Service_Editor::returnQuot($retText, 'rules');
    $retText = Service_Editor::returnQuot($retText, 'frame');
    $retText = Service_Editor::returnQuot($retText, 'colspan');
    $retText = Service_Editor::returnQuot($retText, 'rowspan');
    $retText = Service_Editor::returnQuot($retText, 'title');
    $retText = Service_Editor::returnQuot($retText, 'color');
    return $retText;
  }
  
//  public static function parseHTML($strHTML) {
//  	$retText = strip_tags(str_replace("<br /><br />", '<br />', str_replace("<br>", '<br />',str_replace("\\n", '<br />', str_replace("\\n", '<br />', str_replace("\r", '<br />', str_replace("\\r", '<br />', $strHTML)))))), '<b><p><a><span><font><strong><img><p><em><strike><u><sub><sup><ol><ul><li><img><br><br /><h1><h2><h3><cut>');
//    $retText = stripslashes(str_replace(array('"', "'"), array('&quot;', "&#039;"), $retText));
//    $retText = Service_Editor::returnQuot($retText, 'style');
//    $retText = Service_Editor::returnQuot($retText, 'href');
//    $retText = Service_Editor::returnQuot($retText, 'alt');
//    $retText = Service_Editor::returnQuot($retText, 'src');
//    $retText = Service_Editor::returnQuot($retText, 'class');
//    $retText = Service_Editor::returnQuot($retText, 'id');
//    $retText = Service_Editor::returnQuot($retText, 'type');
//    $retText = Service_Editor::returnQuot($retText, 'cuttext');
//    return $retText;
//  }
  
  /**
   * Метод возвращает кавычки
   *
   * @param string $text - исходный текст
   * @param string $beforeQuot - текст, идущий до кавычек
   * @return string - строка обработанного текста
   */
  public static function returnQuot($text, $beforeQuot, $offset = NULL){
    $beforeQuotSize = strlen($beforeQuot);
    $retText = '';
    do{
      $pos1 = strpos($text, $beforeQuot . '=&quot;');
      if($pos1 === false)
        break;
      $pos2 = strpos($text, '&quot;', $pos1 + ($beforeQuotSize + 5));
      $retText .= substr($text, 0, $pos1 + ($beforeQuotSize + 1)) . '"' . substr($text, $pos1 + ($beforeQuotSize + 7), $pos2 - ($pos1 + ($beforeQuotSize + 7))) . '"';
      $text = substr($text, $pos2 + 6);
    }while(1);  
    $retText .= $text;
    return $retText;
  }
  
}
?>